#pragma once

#include <iostream>
#include <pthread.h>

class Mutex{
public:
    Mutex(pthread_mutex_t *lock_p = nullptr) : lock_p_(lock_p)
    {}

    void lock(){
        if(lock_p_ != nullptr)
            pthread_mutex_lock(lock_p_);
    }

    void unlock(){
        if(lock_p_ != nullptr)
            pthread_mutex_unlock(lock_p_);
    }

    ~Mutex(){}

private:
    pthread_mutex_t *lock_p_;
};

class LockGuard{
public:
    LockGuard(pthread_mutex_t *mutex) : mutex_(mutex){
        mutex_.lock();  // 在构造函数中进行加锁
    }

    ~LockGuard(){
        mutex_.unlock();  // 在析构函数中进行解锁
    }

private:
    Mutex mutex_;
};

